package com.mailbox.mailbox.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mailbox.mailbox.domain.User;
import com.mailbox.mailbox.util.ResponseResult;

import javax.servlet.http.HttpServletRequest;

/**
* @author Administrator
* @description 针对表【user】的数据库操作Service
* @createDate 2022-05-15 08:45:17
 *
 * 声明----->这里的管理员和用户是同一种类型,admin=user
*/
public interface UserService extends IService<User> {

    /**
     * 添加管理员----不与前端交互
     * @param username  账号
     * @param password  密码
     * @param chekPassword  确认密码
     * @param nickname  名字
     * @return
     */
    ResponseResult addAdmin(String username,String password,String chekPassword,String nickname);

    /**
     * 管理员登录
     * @param username  账户
     * @param password  密码
     * @return
     */
    ResponseResult adminLogin(String username, String password);

    /**
     * 管理员信息脱敏----脱离敏感信息返回给前端
     * @param originUser  原来的管理员信息
     * @return
     */
    User getSafetyUser(User originUser);

    /**
     * 修改密码
     * @param oldPassword  旧密码
     * @param newPassword  新密码
     * @param userId 用户id
     * @return
     */
    ResponseResult updateUserPassword(String oldPassword,String newPassword,Integer userId);

    /**
     * 找回密码--因为没有邮箱和电话,只能通过密令找回密码
     * @param authToken 密令
     * @param username 账号
     * @param newPassword 新密码
     * @return
     */
    ResponseResult findPassword(String authToken,String username,String newPassword);

    /**
     * 修改名字
     * @param newNickname 新名字
     * @param userId 用户id
     * @return
     */
    ResponseResult updateNickname(String newNickname,Integer userId);

    /**
     * 退出登录
     * @param userId
     * @return
     */
    ResponseResult logout(Integer userId);

    /**
     * 游客注册
     * @param phoneNumber
     * @param password
     * @param chekPassword
     * @param nickname
     * @param email
     * @return
     */
    ResponseResult register(String phoneNumber,String password,String chekPassword,String nickname,String email,String username);

    /**
     * 遍历用户信息
     * @param userId
     * @return
     */
    ResponseResult UserInfo(Integer userId);
}

